﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Inventario_HardSoft.ADO;
using System.Data;
using System.Windows.Forms;

namespace Inventario_HardSoft.Controlador
{
    class Count_TipoProb
    {
        ConexionDataContext conexion;
        public Count_TipoProb()
        {
            conexion =new ConexionDataContext();
        }

        internal int contarProblemas(string tipoProblema)
        {
            List<PROBLEMA> prob = new List<PROBLEMA>();
            List<PROBLEMA_TIPO> probTipo = new List<PROBLEMA_TIPO>();
            var tpProbid = from p in conexion.PROBLEMA
                           join pt in conexion.PROBLEMA_TIPO on p.IDTIPOPROBLEMA equals pt.IDTIPOPROBLEMA
                           where (pt.TIPO_PROBLEMA == tipoProblema)
                           select new { pt.TIPO_PROBLEMA };
            int result = tpProbid.Count(); 
            return result;
        }

        internal void getLisProHw(DataGridView dg)
        {
            List<PROBLEMA> prob = new List<PROBLEMA>();
            List<PROBLEMA_TIPO> probTipo = new List<PROBLEMA_TIPO>();
            List<EQUIPO> equip = new List<EQUIPO>();
            int i = 1;
            var consulta = from p in conexion.PROBLEMA
                           join pt in conexion.PROBLEMA_TIPO on p.IDTIPOPROBLEMA equals pt.IDTIPOPROBLEMA
                           join eq in conexion.EQUIPO on p.IDEQUIPO equals eq.IDEQUIPO 
                           join u in conexion.USUARIO on eq.IDUSUARIO equals u.IDUSUARIO 
                           where p.IDTIPOPROBLEMA == "TIP_01" && p.ELIMINADO == 0
                           select new
                           {   p.TICKET,
                               u.NOMBRE,
                               p.FECHAENTREGA,
                               p.FECHAREGISTROENTRADA,
                               p.FECHAREGISTROSALIDA,
                               pt.TIPO_PROBLEMA,
                               eq.TIPOEQUIPO,
                               p.PRIORIDAD,
                               p.DESCRIPCION,
                               p.SOLUCION,
                               p.ESTADO,
                               p.TIEMPOREPARACION,                               
                           };
            dg.Rows.Clear();
            foreach (var c in consulta)
            {
                object[] obj = new object[] {i,c.TICKET ?? string.Empty,c.NOMBRE ?? string.Empty,
                                             c.FECHAREGISTROENTRADA.GetValueOrDefault(DateTime.MinValue),
                                             c.FECHAENTREGA.GetValueOrDefault(DateTime.MinValue),                                             
                                             c.FECHAREGISTROSALIDA.GetValueOrDefault(DateTime.MinValue),
                                             c.TIPO_PROBLEMA ?? string.Empty,c.TIPOEQUIPO ?? string.Empty,
                                             string.Empty,this.cambiaPrioridad(c.PRIORIDAD.Value),c.DESCRIPCION ?? string.Empty,
                                             c.SOLUCION ?? string.Empty,c.ESTADO ?? string.Empty,c.TIEMPOREPARACION ?? string.Empty
                                            };
                
                //(obj[2] = //obj[2] == DBNull.Value  ? string.Empty : obj[2].ToString(); 
                obj[3] = ((DateTime)obj[3]).Equals(DateTime.MinValue) ? String.Empty : ((DateTime)obj[3]).ToShortDateString();
                obj[4] = ((DateTime)obj[4]).Equals(DateTime.MinValue) ? String.Empty : ((DateTime)obj[4]).ToShortDateString();
                obj[5] = ((DateTime)obj[5]).Equals(DateTime.MinValue) ? String.Empty : ((DateTime)obj[5]).ToShortDateString();
                dg.Rows.Add(obj);                
                i++;
            }
            dg.Columns[8].Visible = false;
            dg.Columns[6].Visible = false;
        }

        internal void getLisProSw(DataGridView dg)
        {
            int i = 1;
            var consulta = from p in conexion.PROBLEMA
                           join pt in conexion.PROBLEMA_TIPO on p.IDTIPOPROBLEMA equals pt.IDTIPOPROBLEMA
                           join prog in conexion.PROGRAMA on p.IDPROGRAMA equals prog.IDPROGRAMA
                           join eq in conexion.EQUIPO on p.IDEQUIPO equals eq.IDEQUIPO
                           join u in conexion.USUARIO on eq.IDUSUARIO equals u.IDUSUARIO 
                           where p.IDTIPOPROBLEMA == "TIP_02" && p.ELIMINADO == 0
                           select new
                           {
                               p.TICKET,
                               u.NOMBRE,
                               p.FECHAENTREGA,
                               p.FECHAREGISTROENTRADA,
                               p.FECHAREGISTROSALIDA,
                               p.PRIORIDAD,
                               pt.TIPO_PROBLEMA,  
                               eq.TIPOEQUIPO,
                               prog.NOMBREPROGRAMA,
                               p.DESCRIPCION,
                               p.SOLUCION,
                               p.ESTADO,
                               p.TIEMPOREPARACION                               
                           };
            dg.Rows.Clear();
            foreach (var c in consulta)
            {
                object[] obj = new object[] {i,c.TICKET ?? string.Empty,c.NOMBRE ?? string.Empty, c.FECHAENTREGA.GetValueOrDefault(DateTime.MinValue),
                                             c.FECHAREGISTROENTRADA.GetValueOrDefault(DateTime.MinValue),
                                             c.FECHAREGISTROSALIDA.GetValueOrDefault(DateTime.MinValue),
                                             c.TIPO_PROBLEMA ?? string.Empty,c.TIPOEQUIPO ?? string.Empty,c.NOMBREPROGRAMA ?? string.Empty,this.cambiaPrioridad(c.PRIORIDAD.Value),
                                             c.DESCRIPCION ?? string.Empty,
                                             c.SOLUCION ?? string.Empty,c.ESTADO ?? string.Empty,c.TIEMPOREPARACION ?? string.Empty
                                            };
                obj[3] = ((DateTime)obj[3]).Equals(DateTime.MinValue) ? String.Empty : ((DateTime)obj[3]).ToShortDateString();
                obj[4] = ((DateTime)obj[4]).Equals(DateTime.MinValue) ? String.Empty : ((DateTime)obj[4]).ToShortDateString();
                obj[5] = ((DateTime)obj[5]).Equals(DateTime.MinValue) ? String.Empty : ((DateTime)obj[5]).ToShortDateString();
                dg.Rows.Add(obj);
                i++;
            }
            dg.Columns[8].Visible = true;
            dg.Columns[6].Visible = false;
        }

        private string cambiaPrioridad(int pri)
        {
            string result = string.Empty;
            switch (pri)
            {
                case 1:
                    result = "Alta";
                    break;
                case 2:
                    result = "Media";
                    break;
                case 3:
                    result = "Baja";
                    break;
            }
            return result;
        }

        internal void fechaRegistroEntrada(DataGridView dg, DateTime f1, DateTime f2)
        {  
            List<PROBLEMA> prob = new List<PROBLEMA>();
            List<PROBLEMA_TIPO> probTipo = new List<PROBLEMA_TIPO>();
            List<EQUIPO> equip = new List<EQUIPO>();
            int i = 1;
            var consulta1 = from p in conexion.PROBLEMA
                           join pt in conexion.PROBLEMA_TIPO on p.IDTIPOPROBLEMA equals pt.IDTIPOPROBLEMA
                           join eq in conexion.EQUIPO on p.IDEQUIPO equals eq.IDEQUIPO
                           join u in conexion.USUARIO on eq.IDUSUARIO equals u.IDUSUARIO
                           where p.IDTIPOPROBLEMA == "TIP_01" && p.ELIMINADO == 0 && p.FECHAREGISTROENTRADA >= f1 && p.FECHAREGISTROENTRADA <= f2
                           select new
                           {
                               p.TICKET,
                               u.NOMBRE,
                               p.FECHAENTREGA,
                               p.FECHAREGISTROENTRADA,
                               p.FECHAREGISTROSALIDA,
                               pt.TIPO_PROBLEMA,
                               eq.TIPOEQUIPO,
                               p.PRIORIDAD,
                               p.DESCRIPCION,
                               p.SOLUCION,
                               p.ESTADO,
                               p.TIEMPOREPARACION,
                           };
            dg.Rows.Clear();
            foreach (var c in consulta1)
            {
                object[] obj = new object[] {i,c.TICKET ?? string.Empty,c.NOMBRE ?? string.Empty,
                                             c.FECHAREGISTROENTRADA.GetValueOrDefault(DateTime.MinValue),
                                             c.FECHAENTREGA.GetValueOrDefault(DateTime.MinValue),                                             
                                             c.FECHAREGISTROSALIDA.GetValueOrDefault(DateTime.MinValue),
                                             c.TIPO_PROBLEMA ?? string.Empty,c.TIPOEQUIPO ?? string.Empty,string.Empty,this.cambiaPrioridad(c.PRIORIDAD.Value),
                                             c.DESCRIPCION ?? string.Empty,
                                             c.SOLUCION ?? string.Empty,c.ESTADO ?? string.Empty,c.TIEMPOREPARACION ?? string.Empty
                                            };
                obj[3] = ((DateTime)obj[3]).Equals(DateTime.MinValue) ? String.Empty : ((DateTime)obj[3]).ToShortDateString();
                obj[4] = ((DateTime)obj[4]).Equals(DateTime.MinValue) ? String.Empty : ((DateTime)obj[4]).ToShortDateString();
                obj[5] = ((DateTime)obj[5]).Equals(DateTime.MinValue) ? String.Empty : ((DateTime)obj[5]).ToShortDateString();
                dg.Rows.Add(obj);
                i++;
            }
            dg.Columns[8].Visible = false;
            dg.Columns[6].Visible = false; 
        }

        internal void fechaRegistroEntradaSoft(DataGridView dg, DateTime f1, DateTime f2)
        { 
            List<PROBLEMA> prob = new List<PROBLEMA>();
            List<PROBLEMA_TIPO> probTipo = new List<PROBLEMA_TIPO>();
            List<EQUIPO> equip = new List<EQUIPO>();
            int i = 1;
            var consulta1 = from p in conexion.PROBLEMA
                            join pt in conexion.PROBLEMA_TIPO on p.IDTIPOPROBLEMA equals pt.IDTIPOPROBLEMA
                            join eq in conexion.EQUIPO on p.IDEQUIPO equals eq.IDEQUIPO
                            join u in conexion.USUARIO on eq.IDUSUARIO equals u.IDUSUARIO
                            where p.IDTIPOPROBLEMA == "TIP_02" && p.ELIMINADO == 0 && p.FECHAREGISTROENTRADA >= f1 && p.FECHAREGISTROENTRADA <= f2
                            select new
                            {
                                p.TICKET,
                                u.NOMBRE,
                                p.FECHAENTREGA,
                                p.FECHAREGISTROENTRADA,
                                p.FECHAREGISTROSALIDA,
                                pt.TIPO_PROBLEMA,
                                eq.TIPOEQUIPO,
                                p.PRIORIDAD,
                                p.DESCRIPCION,
                                p.SOLUCION,
                                p.ESTADO,
                                p.TIEMPOREPARACION,
                            };
            dg.Rows.Clear();
            foreach (var c in consulta1)
            {
                object[] obj = new object[] {i,c.TICKET ?? string.Empty,c.NOMBRE ?? string.Empty,
                                             c.FECHAREGISTROENTRADA.GetValueOrDefault(DateTime.MinValue),
                                             c.FECHAENTREGA.GetValueOrDefault(DateTime.MinValue),                                             
                                             c.FECHAREGISTROSALIDA.GetValueOrDefault(DateTime.MinValue),
                                             c.TIPO_PROBLEMA ?? string.Empty,c.TIPOEQUIPO ?? string.Empty,
                                             string.Empty,this.cambiaPrioridad(c.PRIORIDAD.Value),c.DESCRIPCION,
                                             c.SOLUCION ?? string.Empty,c.ESTADO ?? string.Empty,c.TIEMPOREPARACION ?? string.Empty
                                            };
                obj[3] = ((DateTime)obj[3]).Equals(DateTime.MinValue) ? String.Empty : ((DateTime)obj[3]).ToShortDateString();
                obj[4] = ((DateTime)obj[4]).Equals(DateTime.MinValue) ? String.Empty : ((DateTime)obj[4]).ToShortDateString();
                obj[5] = ((DateTime)obj[5]).Equals(DateTime.MinValue) ? String.Empty : ((DateTime)obj[5]).ToShortDateString();
                dg.Rows.Add(obj);
                i++;
            }
            dg.Columns[8].Visible = false;
            dg.Columns[6].Visible = false; 
        }

        internal void fechaRegistroEntrega(DataGridView dg, DateTime f1, DateTime f2)
        {
            List<PROBLEMA> prob = new List<PROBLEMA>();
            List<PROBLEMA_TIPO> probTipo = new List<PROBLEMA_TIPO>();
            List<EQUIPO> equip = new List<EQUIPO>();
            int i = 1;
            var consulta1 = from p in conexion.PROBLEMA
                            join pt in conexion.PROBLEMA_TIPO on p.IDTIPOPROBLEMA equals pt.IDTIPOPROBLEMA
                            join eq in conexion.EQUIPO on p.IDEQUIPO equals eq.IDEQUIPO
                            join u in conexion.USUARIO on eq.IDUSUARIO equals u.IDUSUARIO
                            where p.IDTIPOPROBLEMA == "TIP_01" && p.ELIMINADO == 0 && p.FECHAENTREGA >= f1 && p.FECHAENTREGA <= f2
                            select new
                            {
                                p.TICKET,
                                u.NOMBRE,
                                p.FECHAENTREGA,
                                p.FECHAREGISTROENTRADA,
                                p.FECHAREGISTROSALIDA,
                                pt.TIPO_PROBLEMA,
                                eq.TIPOEQUIPO,
                                p.PRIORIDAD,
                                p.DESCRIPCION,
                                p.SOLUCION,
                                p.ESTADO,
                                p.TIEMPOREPARACION,
                            };
            dg.Rows.Clear();
            foreach (var c in consulta1)
            {
                object[] obj = new object[] {i,c.TICKET ?? string.Empty,c.NOMBRE ?? string.Empty,
                                             c.FECHAREGISTROENTRADA.GetValueOrDefault(DateTime.MinValue),
                                             c.FECHAENTREGA.GetValueOrDefault(DateTime.MinValue),                                             
                                             c.FECHAREGISTROSALIDA.GetValueOrDefault(DateTime.MinValue),
                                             c.TIPO_PROBLEMA ?? string.Empty,c.TIPOEQUIPO ?? string.Empty,
                                             string.Empty,this.cambiaPrioridad(c.PRIORIDAD.Value),c.DESCRIPCION ?? string.Empty,
                                             c.SOLUCION ?? string.Empty,c.ESTADO ?? string.Empty,c.TIEMPOREPARACION ?? string.Empty
                                            };
                obj[3] = ((DateTime)obj[3]).Equals(DateTime.MinValue) ? String.Empty : ((DateTime)obj[3]).ToShortDateString();
                obj[4] = ((DateTime)obj[4]).Equals(DateTime.MinValue) ? String.Empty : ((DateTime)obj[4]).ToShortDateString();
                obj[5] = ((DateTime)obj[5]).Equals(DateTime.MinValue) ? String.Empty : ((DateTime)obj[5]).ToShortDateString();
                dg.Rows.Add(obj);
                i++;
            }
            dg.Columns[8].Visible = false;
            dg.Columns[6].Visible = false;
             
        }

        internal void fechaRegistroEntregaSfoft(DataGridView dg, DateTime f1, DateTime f2)
        {

            List<PROBLEMA> prob = new List<PROBLEMA>();
            List<PROBLEMA_TIPO> probTipo = new List<PROBLEMA_TIPO>();
            List<EQUIPO> equip = new List<EQUIPO>();
            int i = 1;
            var consulta1 = from p in conexion.PROBLEMA
                            join pt in conexion.PROBLEMA_TIPO on p.IDTIPOPROBLEMA equals pt.IDTIPOPROBLEMA
                            join eq in conexion.EQUIPO on p.IDEQUIPO equals eq.IDEQUIPO
                            join u in conexion.USUARIO on eq.IDUSUARIO equals u.IDUSUARIO
                            where p.IDTIPOPROBLEMA == "TIP_02" && p.ELIMINADO == 0 && p.FECHAENTREGA >= f1 && p.FECHAENTREGA <= f2
                            select new
                            {
                                p.TICKET,
                                u.NOMBRE,
                                p.FECHAENTREGA,
                                p.FECHAREGISTROENTRADA,
                                p.FECHAREGISTROSALIDA,
                                pt.TIPO_PROBLEMA,
                                eq.TIPOEQUIPO,
                                p.PRIORIDAD,
                                p.DESCRIPCION,
                                p.SOLUCION,
                                p.ESTADO,
                                p.TIEMPOREPARACION,
                            };
            dg.Rows.Clear();
            foreach (var c in consulta1)
            {
                object[] obj = new object[] {i,c.TICKET ?? string.Empty,c.NOMBRE ?? string.Empty,
                                             c.FECHAREGISTROENTRADA.GetValueOrDefault(DateTime.MinValue),
                                             c.FECHAENTREGA.GetValueOrDefault(DateTime.MinValue),                                             
                                             c.FECHAREGISTROSALIDA.GetValueOrDefault(DateTime.MinValue),
                                             c.TIPO_PROBLEMA ?? string.Empty,c.TIPOEQUIPO ?? string.Empty,
                                             string.Empty,this.cambiaPrioridad(c.PRIORIDAD.Value),c.DESCRIPCION ?? string.Empty,
                                             c.SOLUCION ?? string.Empty,c.ESTADO ?? string.Empty,c.TIEMPOREPARACION ?? string.Empty
                                            };
                obj[3] = ((DateTime)obj[3]).Equals(DateTime.MinValue) ? String.Empty : ((DateTime)obj[3]).ToShortDateString();
                obj[4] = ((DateTime)obj[4]).Equals(DateTime.MinValue) ? String.Empty : ((DateTime)obj[4]).ToShortDateString();
                obj[5] = ((DateTime)obj[5]).Equals(DateTime.MinValue) ? String.Empty : ((DateTime)obj[5]).ToShortDateString();
                dg.Rows.Add(obj);
                i++;
            }
            dg.Columns[8].Visible = false;
            dg.Columns[6].Visible = false;  
        }

        internal void fechaRegistroSalida(DataGridView dg, DateTime f1, DateTime f2)
        {

            List<PROBLEMA> prob = new List<PROBLEMA>();
            List<PROBLEMA_TIPO> probTipo = new List<PROBLEMA_TIPO>();
            List<EQUIPO> equip = new List<EQUIPO>();
            int i = 1;
            var consulta1 = from p in conexion.PROBLEMA
                            join pt in conexion.PROBLEMA_TIPO on p.IDTIPOPROBLEMA equals pt.IDTIPOPROBLEMA
                            join eq in conexion.EQUIPO on p.IDEQUIPO equals eq.IDEQUIPO
                            join u in conexion.USUARIO on eq.IDUSUARIO equals u.IDUSUARIO
                            where p.IDTIPOPROBLEMA == "TIP_01" && p.ELIMINADO == 0 && p.FECHAREGISTROSALIDA >= f1 && p.FECHAREGISTROSALIDA <= f2
                            select new
                            {
                                p.TICKET,
                                u.NOMBRE,
                                p.FECHAENTREGA,
                                p.FECHAREGISTROENTRADA,
                                p.FECHAREGISTROSALIDA,
                                pt.TIPO_PROBLEMA,
                                eq.TIPOEQUIPO,
                                p.PRIORIDAD,
                                p.DESCRIPCION,
                                p.SOLUCION,
                                p.ESTADO,
                                p.TIEMPOREPARACION,
                            };
            dg.Rows.Clear();
            foreach (var c in consulta1)
            {
                object[] obj = new object[] {i,c.TICKET ?? string.Empty,c.NOMBRE ?? string.Empty,
                                             c.FECHAREGISTROENTRADA.GetValueOrDefault(DateTime.MinValue),
                                             c.FECHAENTREGA.GetValueOrDefault(DateTime.MinValue),                                             
                                             c.FECHAREGISTROSALIDA.GetValueOrDefault(DateTime.MinValue),
                                             c.TIPO_PROBLEMA ?? string.Empty,c.TIPOEQUIPO ?? string.Empty,
                                             string.Empty,this.cambiaPrioridad(c.PRIORIDAD.Value),c.DESCRIPCION ?? string.Empty,
                                             c.SOLUCION ?? string.Empty,c.ESTADO ?? string.Empty,c.TIEMPOREPARACION ?? string.Empty
                                            };
                obj[3] = ((DateTime)obj[3]).Equals(DateTime.MinValue) ? String.Empty : ((DateTime)obj[3]).ToShortDateString();
                obj[4] = ((DateTime)obj[4]).Equals(DateTime.MinValue) ? String.Empty : ((DateTime)obj[4]).ToShortDateString();
                obj[5] = ((DateTime)obj[5]).Equals(DateTime.MinValue) ? String.Empty : ((DateTime)obj[5]).ToShortDateString();
                dg.Rows.Add(obj);
                i++;
            }
            dg.Columns[8].Visible = false;
            dg.Columns[6].Visible = false;
             


        }

        internal void fechaRegistroSalidaSoft(DataGridView dg, DateTime f1, DateTime f2)
        {
            List<PROBLEMA> prob = new List<PROBLEMA>();
            List<PROBLEMA_TIPO> probTipo = new List<PROBLEMA_TIPO>();
            List<EQUIPO> equip = new List<EQUIPO>();
            int i = 1;
            var consulta1 = from p in conexion.PROBLEMA
                            join pt in conexion.PROBLEMA_TIPO on p.IDTIPOPROBLEMA equals pt.IDTIPOPROBLEMA
                            join eq in conexion.EQUIPO on p.IDEQUIPO equals eq.IDEQUIPO
                            join u in conexion.USUARIO on eq.IDUSUARIO equals u.IDUSUARIO
                            where p.IDTIPOPROBLEMA == "TIP_02" && p.ELIMINADO == 0 && p.FECHAREGISTROSALIDA >= f1 && p.FECHAREGISTROSALIDA <= f2
                            select new
                            {
                                p.TICKET,
                                u.NOMBRE,
                                p.FECHAENTREGA,
                                p.FECHAREGISTROENTRADA,
                                p.FECHAREGISTROSALIDA,
                                pt.TIPO_PROBLEMA,
                                eq.TIPOEQUIPO,
                                p.PRIORIDAD,
                                p.DESCRIPCION,
                                p.SOLUCION,
                                p.ESTADO,
                                p.TIEMPOREPARACION,
                            };
            dg.Rows.Clear();
            foreach (var c in consulta1)
            {
                object[] obj = new object[] {i,c.TICKET ?? string.Empty,c.NOMBRE ?? string.Empty,
                                             c.FECHAREGISTROENTRADA.GetValueOrDefault(DateTime.MinValue),
                                             c.FECHAENTREGA.GetValueOrDefault(DateTime.MinValue),                                             
                                             c.FECHAREGISTROSALIDA.GetValueOrDefault(DateTime.MinValue),
                                             c.TIPO_PROBLEMA ?? string.Empty,c.TIPOEQUIPO ?? string.Empty,string.Empty,this.cambiaPrioridad(c.PRIORIDAD.Value),c.DESCRIPCION,
                                             c.SOLUCION ?? string.Empty,c.ESTADO ?? string.Empty,c.TIEMPOREPARACION ?? string.Empty
                                            };
                obj[3] = ((DateTime)obj[3]).Equals(DateTime.MinValue) ? String.Empty : ((DateTime)obj[3]).ToShortDateString();
                obj[4] = ((DateTime)obj[4]).Equals(DateTime.MinValue) ? String.Empty : ((DateTime)obj[4]).ToShortDateString();
                obj[5] = ((DateTime)obj[5]).Equals(DateTime.MinValue) ? String.Empty : ((DateTime)obj[5]).ToShortDateString();
                dg.Rows.Add(obj);
                i++;
            }
            dg.Columns[8].Visible = false;
            dg.Columns[6].Visible = false;  
        }
    }
}
